home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / RIncludes / Sound.r < prev    next >
Encoding:
Text File  |  1998-08-17  |  9.1 KB  |  232 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Sound.r
  3.  
  4.      Contains:    Sound Manager Interfaces.
  5.  
  6.      Version:    Technology:    Sound Manager 3.3
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1986-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17.  
  18. #ifndef __SOUND_R__
  19. #define __SOUND_R__
  20.  
  21. #ifndef __CONDITIONALMACROS_R__
  22. #include "ConditionalMacros.r"
  23. #endif
  24.  
  25. #define kInvalidSource                     0xFFFFFFFF            /* this source may be returned from GetInfo if no other source is the monitored source */
  26. #define kNoSource                         'none'                /* no source selection */
  27. #define kCDSource                         'cd  '                /* internal CD player input */
  28. #define kExtMicSource                     'emic'                /* external mic input */
  29. #define kSoundInSource                     'sinj'                /* sound input jack */
  30. #define kRCAInSource                     'irca'                /* RCA jack input */
  31. #define kTVFMTunerSource                 'tvfm'
  32. #define kDAVInSource                     'idav'                /* DAV analog input */
  33. #define kIntMicSource                     'imic'                /* internal mic input */
  34. #define kMediaBaySource                 'mbay'                /* media bay input */
  35. #define kModemSource                     'modm'                /* modem input (internal modem on desktops, PCI input on PowerBooks) */
  36. #define kPCCardSource                     'pcm '                /* PC Card pwm input */
  37. #define kZoomVideoSource                 'zvpc'                /* zoom video input */
  38. #define kDVDSource                         'dvda'                /* DVD audio input */
  39.  
  40. #define kNoSoundComponentType             '****'
  41. #define kSoundComponentType             'sift'                /* component type */
  42. #define kSoundComponentPPCType             'nift'                /* component type for PowerPC code */
  43. #define kRate8SubType                     'ratb'                /* 8-bit rate converter */
  44. #define kRate16SubType                     'ratw'                /* 16-bit rate converter */
  45. #define kConverterSubType                 'conv'                /* sample format converter */
  46. #define kSndSourceSubType                 'sour'                /* generic source component */
  47. #define kMixerType                         'mixr'
  48. #define kMixer8SubType                     'mixb'                /* 8-bit mixer */
  49. #define kMixer16SubType                 'mixw'                /* 16-bit mixer */
  50. #define kSoundInputDeviceType             'sinp'                /* sound input component */
  51. #define kWaveInSubType                     'wavi'                /* Windows Wave */
  52. #define kSoundOutputDeviceType             'sdev'                /* sound output component */
  53. #define kClassicSubType                 'clas'                /* classic hardware, i.e. Mac Plus */
  54. #define kASCSubType                     'asc '                /* Apple Sound Chip device */
  55. #define kDSPSubType                     'dsp '                /* DSP device */
  56. #define kAwacsSubType                     'awac'                /* Another of Will's Audio Chips device */
  57. #define kGCAwacsSubType                 'awgc'                /* Awacs audio with Grand Central DMA */
  58. #define kSingerSubType                     'sing'                /* Singer (via Whitney) based sound */
  59. #define kSinger2SubType                 'sng2'                /* Singer 2 (via Whitney) for Acme */
  60. #define kWhitSubType                     'whit'                /* Whit sound component for PrimeTime 3 */
  61. #define kSoundBlasterSubType             'sbls'                /* Sound Blaster for CHRP */
  62. #define kWaveOutSubType                 'wavo'                /* Windows Wave */
  63. #define kDirectSoundSubType             'dsnd'                /* Direct Sound */
  64. #define kUNIXsdevSubType                 'un1x'                /* UNIX base sdev */
  65. #define kSoundCompressor                 'scom'
  66. #define kSoundDecompressor                 'sdec'
  67. #define kAudioComponentType             'adio'                /* Audio components and sub-types */
  68. #define kAwacsPhoneSubType                 'hphn'
  69. #define kAudioVisionSpeakerSubType         'telc'
  70. #define kAudioVisionHeadphoneSubType     'telh'
  71. #define kPhilipsFaderSubType             'tvav'
  72. #define kSGSToneSubType                 'sgs0'
  73. #define kSoundEffectsType                 'snfx'                /* sound effects type */
  74. #define kSSpLocalizationSubType         'snd3'
  75.  
  76. #define kSoundNotCompressed             'NONE'                /* sound is not compressed */
  77. #define k8BitOffsetBinaryFormat         'raw '                /* 8-bit offset binary */
  78. #define k16BitBigEndianFormat             'twos'                /* 16-bit big endian */
  79. #define k16BitLittleEndianFormat         'sowt'                /* 16-bit little endian */
  80. #define kFloat32Format                     'fl32'                /* 32-bit floating point */
  81. #define kFloat64Format                     'fl64'                /* 64-bit floating point */
  82. #define k24BitFormat                     'in24'                /* 24-bit integer */
  83. #define k32BitFormat                     'in32'                /* 32-bit integer */
  84. #define kMACE3Compression                 'MAC3'                /* MACE 3:1 */
  85. #define kMACE6Compression                 'MAC6'                /* MACE 6:1 */
  86. #define kCDXA4Compression                 'cdx4'                /* CD/XA 4:1 */
  87. #define kCDXA2Compression                 'cdx2'                /* CD/XA 2:1 */
  88. #define kIMACompression                 'ima4'                /* IMA 4:1 */
  89. #define kULawCompression                 'ulaw'                /* µLaw 2:1 */
  90. #define kALawCompression                 'alaw'                /* aLaw 2:1 */
  91. #define kMicrosoftADPCMFormat             0x6D730002            /* Microsoft ADPCM - ACM code 2 */
  92. #define kDVIIntelIMAFormat                 0x6D730011            /* DVI/Intel IMA ADPCM - ACM code 17 */
  93. #define kDVAudioFormat                     'dvca'                /* DV Audio */
  94. #define kQDesignCompression             'QDMC'                /* QDesign music */
  95. #define kQUALCOMMCompression             'Qclp'                /* QUALCOMM PureVoice */
  96. #define kOffsetBinary                     'raw '                /* for compatibility */
  97. #define kTwosComplement                 'twos'                /* for compatibility */
  98. #define kLittleEndianFormat             'sowt'                /* for compatibility */
  99.  
  100. #define k8BitRawIn                         0x01                /* data description */
  101. #define k8BitTwosIn                     0x02
  102. #define k16BitIn                         0x04
  103. #define kStereoIn                         0x08
  104. #define k8BitRawOut                     0x0100
  105. #define k8BitTwosOut                     0x0200
  106. #define k16BitOut                         0x0400
  107. #define kStereoOut                         0x0800
  108. #define kReverse                         0x00010000            /*   function description */
  109. #define kRateConvert                     0x00020000
  110. #define kCreateSoundSource                 0x00040000
  111. #define kHighQuality                     0x00400000            /*   performance description */
  112. #define kNonRealTime                     0x00800000
  113.  
  114.  
  115. /*----------------------------snd  • Sound----------------------------------------------*/
  116. type 'snd ' {
  117.         switch {
  118.             case FormatOne:
  119.                 key unsigned integer = $0001;
  120.                 unsigned integer = $$CountOf(Synthesizers);
  121.                 wide array Synthesizers {
  122.                     /* Resource ID of synthesizer/modifer */
  123.                     integer        squareWaveSynth        = $0001,
  124.                                 waveTableSynth        = $0003,
  125.                                 sampledSynth        = $0005;
  126.                     longint;                                    /* init parameter        */
  127.                 };
  128.  
  129.             case FormatTwo:
  130.                 key unsigned integer = $0002;
  131.                 integer        free = 0, keepInMemory = 256+1;        /* Space for refe count    */
  132.         };
  133.         unsigned integer = $$CountOf(SoundCmnds);
  134.         wide array SoundCmnds {
  135.             boolean        noData, hasData;
  136.             switch {
  137.                 case nullCmd:
  138.                     key bitstring[15] = 0;
  139.                     fill word;                                    /* Param 1 = nil        */
  140.                     fill long;                                    /* Param 2 = nil        */
  141.                 case quietCmd:
  142.                     key bitstring[15] = 3;
  143.                     fill word;                                    /* Param 1 = nil        */
  144.                     fill long;                                    /* Param 2 = nil        */
  145.                 case flushCmd:
  146.                     key bitstring[15] = 4;
  147.                     fill word;                                    /* Param 1 = nil        */
  148.                     fill long;                                    /* Param 2 = nil        */
  149.                 case waitCmd:
  150.                     key bitstring[15] = 10;
  151.                     integer        oneSecond = 2000;                /* Duration                */
  152.                     fill long;                                    /* Param 2 = nil        */
  153.                 case pauseCmd:
  154.                     key bitstring[15] = 11;
  155.                     fill word;                                    /* Param 1 = nil        */
  156.                     fill long;                                    /* Param 2 = nil        */
  157.                 case resumeCmd:
  158.                     key bitstring[15] = 12;
  159.                     fill word;                                    /* Param 1 = nil        */
  160.                     fill long;                                    /* Param 2 = nil        */
  161.                 case callBackCmd:
  162.                     key bitstring[15] = 13;
  163.                     integer;                                    /* User-defined            */
  164.                     longint;                                    /* User-defined            */
  165.                 case syncCmd:
  166.                     key bitstring[15] = 14;
  167.                     integer;                                    /* Count                */
  168.                     longint;                                    /* Identifier            */
  169.                 case emptyCmd:
  170.                     key bitstring[15] = 15;
  171.                     fill word;                                    /* Param 1 = nil        */
  172.                     fill long;                                    /* Param 2 = nil        */
  173.                 case freqDurationCmd:
  174.                     key bitstring[15] = 40;
  175.                     integer        oneSecond = 2000;                /* Duration                */
  176.                     longint;                                    /* frequency            */
  177.                 case restCmd:
  178.                     key bitstring[15] = 41;
  179.                     integer        oneSecond = 2000;                /* Duration                */
  180.                     fill long;                                    /* Param 2 = nil        */
  181.                 case freqCmd:
  182.                     key bitstring[15] = 42;
  183.                     fill word;                                    /* Param 1 = nil        */
  184.                     longint;                                    /* Frequency            */
  185.                 case ampCmd:
  186.                     key bitstring[15] = 43;
  187.                     integer;                                    /* Amplitude            */
  188.                     fill long;                                    /* Param 2                */
  189.                 case timbreCmd:
  190.                     key bitstring[15] = 44;
  191.                     integer        sineWave, squareWave = 255;        /* Timbre                */
  192.                     fill long;                                    /* Param 2                */
  193.                 case waveTableCmd:
  194.                     key bitstring[15] = 60;
  195.                     unsigned integer;                            /* Length                */
  196.                     longint;                                    /* Pointer to table        */
  197.                 case phaseCmd:
  198.                     key bitstring[15] = 61;
  199.                     integer;                                    /* Shift                */
  200.                     longint;                                    /* chanPtr                */
  201.                 case soundCmd:
  202.                     key bitstring[15] = 80;
  203.                     fill word;                                    /* Param 1 = nil        */
  204.                     longint;                                    /* Pointer to sound        */
  205.                 case bufferCmd:
  206.                     key bitstring[15] = 81;
  207.                     fill word;                                    /* Param 1 = nil        */
  208.                     longint;                                    /* Pointer to buffer    */
  209.                 case rateCmd:
  210.                     key bitstring[15] = 82;
  211.                     fill word;                                    /* Param 1 = nil        */
  212.                     longint;                                    /* Rate                    */
  213.             };
  214.         };
  215.         array DataTables {
  216.     DataTable:
  217.             fill long;                                            /* Pointer to data        */
  218.     SampleCnt:
  219.             unsigned longint;                                    /* # of sound samples    */
  220.             unsigned hex longint
  221.                     Rate22K = $56EE8BA3;                        /* Sampling rate        */
  222.             unsigned longint;                                    /* Start of loop        */
  223.             unsigned longint;                                    /* End of loop            */
  224.             hex byte;                                            /* encode (header type)    */
  225.             hex byte;                                            /* baseFrequency        */
  226.             hex string [$$Long(SampleCnt[$$ArrayIndex(DataTables)])];
  227.         };
  228. };
  229.  
  230. #endif /* __SOUND_R__ */
  231.  
  232.